#include<iostream>
#include<vector>
#include<unordered_set>
using namespace std;

// set方法
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result;
        unordered_set<int> nums_set(nums1.begin(), nums1.end()); // 去重
        for(int num : nums2){
            if(nums_set.find(num) != nums_set.end()){
                result.insert(num);
            }
        }
        return vector<int>(result.begin(), result.end());
    }
};

// 数组方法
// class Solution {
// public:
//     vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//         int hash[1005] = {0};
//         unordered_set<int> result;
//         for(int i = 0; i < nums1.size(); i++){
//             hash[nums1[i]] = 1; // 不能使用++，会导致重复元素
//         }
//         for(int i = 0; i < nums2.size(); i++){
//             if(hash[nums2[i]] == 1){
//                 result.insert(nums2[i]);
//             }
//         }
//         return vector<int>(result.begin(), result.end());
//     }
// };
 
int main()
{
    Solution s;
    vector<int> nums1 = {1, 2, 2, 1};
    vector<int> nums2 = {2, 2};
    vector<int> result = s.intersection(nums1, nums2);
    for(int i = 0 ; i < result.size(); i++){
        cout << result[i] << " ";
    }
    return 0;
}